package 线程安全;

public class 线程安全问题_不安全 {
    //多个线程使用同样的共享变量
    private static  int num = 0;

    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                //把num循环++ 10000次
                for (int i = 0; i < 10000; i++) {
                    num++;
                }
            }
        });
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                //把num循环-- 10000次
                for (int i = 0; i < 10000; i++) {
                    num--;
                }
            }
        });
        //++一万次
        t1.start();
        //--一万次
        t2.start();
        //让t1，t2线程执行完，按逻辑来说，num应该就是0
        t1.join();
        t2.join();
        //打印的num值，不是预期的0，而是-10000到10000之间的随机数
        System.out.println(num);
    }
}
